﻿//#include<stdio.h>
//int Add(int x, int y)
//{
//	return x + y;
//}
//int main()
//{
//	//int x = 0;
//	//int y = 0;
//	//scanf("%d %d", x, y);
//	printf("%p\n", &Add);
//	printf("%p\n", Add);
//	//&函数名 就是函数的地址
//	//函数名 也是函数的地址
//	//注意函数名并没有首元素这一说法
//}


//#include<stdio.h>
//int Add(int x, int y)
//{
//	return x + y;
//}
//int main()
//{
//	printf("%p\n", &Add);
//	printf("%p\n", Add);
//	int (*p)(int,int) = &Add;
//	int ret=(*p)(3, 5);//解引用找到函数
//	int ret = (********p)(3, 5);//*是个摆设，写不写都可
//	int ret = Add(3, 5);//直接调用Add函数就是用Add函数的地址
//	int ret = p(3, 5);//这里也可以直接使用地址
//	printf("%d", ret);
//}
//void (* signal(int, void(*)(int)))(int);
////void(*)(int) signal(int void(*)(int));❌
////重定义
//typedef void(*pfun_t)(int);
//pfun_t signal(int pfun_t);
//#include<stdio.h>
//int Add(int x, int y)
//{
//	return x + y;
//}
//int Sub(int x, int y)
//{
//	return x - y;
//}
//int main()
//{
//	int(*p1)(int, int) = &Add;
//	int(*p1)(int, int) = &Sub;
//	//函数指针数组中存放的类型相同的多个元素
//	int(*p[])(int, int) = { &Add,&Sub };
//	//p是函数指针数组_存放函数指针的数组
//	//均是返回类型为int,函数参数是int,int类型
//}
//#define _CRT_SECURE_NO_WARNINGS 1
////计算器
//#include<stdio.h>
//void meau()
//{
//	printf("**************************");
//	printf("** 1.add   2.sub      ****");
//	printf("** 3.mul   4.div      ****");
//	printf("** 0.exit            *****");
//	printf("**************************");
//}
//int Add(int x, int y)
//{
//	return x + y;
//}
//int Sub(int x, int y)
//{
//	return x - y;
//}
//int Mul(int x, int y)
//{
//	return x * y;
//}
//int Div(int x, int y)
//{
//	return x / y;
//}
//int main()
//{
//	int input = 0;
//	int x = 0;
//	int y = 0;
//	int ret = 0;
//	do
//	{
//		meau();
//		printf("请选择>");
//		scanf("%d", &input);
//		switch (input)
//		{
//		case1:
//			printf("请输入2个操作数：");
//			scanf("%d %d", &x, &y);
//			ret = Add(x, y);
//			printf("ret=%d\n", ret);
//			break;
//		case2:
//			printf("请输入2个操作数：");
//			scanf("%d %d", &x, &y);
//			ret = Sub(x, y);
//			printf("ret=%d\n", ret);
//			break;
//		case3:
//			printf("请输入2个操作数：");
//			scanf("%d %d", &x, &y);
//			ret = Mul(x, y);
//			printf("ret=%d\n", ret);
//			break;
//		case4:
//			printf("请输入2个操作数：");
//			scanf("%d %d", &x, &y);
//			ret = Div(x, y);
//			printf("ret=%d\n", ret);
//			break;
//		case0:
//			printf("退出游戏");
//			break;
//		default:
//			printf("选择错误，重新选择\n");
//			break;
//		}
//	} while (input);
//	return 0;
//}
